#include <sys/mman.h>

#include <unistd.h>
 
#include <sys/types.h>

/**
 * const char*name:这是共享内存对象的名称，直接写一个文件名称，本身会保存在/dey/shm。名称必须是唯一的，以便不同进程可以定位同一个共享内存段。
* 命名规则：必须是以正斜杠/开头，以©结尾的字符串，中间可以包含若干字符，但不能有正斜杠
* int oflag:打开模式二进制可拼接
*      (1)O_CREAT:如果不存在则创建新的共享内存对象
*      (2)O_EXCL:当与O_CREAT一起使用时，如果共享内存对象已经存在，则返回错误（避免覆盖现有对象）
*      (3)O_RDONLY:以只读方式打开
*      (4)O_RDWR:以读写方式打开
*      (5)O_TRUNC:用于截断现有对象至0长度(只有在打开模式包含 O_RDWR 标志被指定时才有效)
* mode_t mode:权限位 当创建新的共享内存对象时，类似文件的权限模式，一般是0644即可
* 返回值:成功返回共享内存对象的文件描述符，失败返回-1
*/
 
int shm_open(const char *name, int oflag, mode_t mode);
 
 
/**
 * 删除一个先前由shm open()创建的命名共享内存对象。尽管这个函数被称为“unlink”,但它并没有真正删除共享内存段本身，而是移除了与共享内存对象关联的名称，使得通过该名称无法再打开共享内存。当所有已打开该共享内存段的进程关闭它们的描述符后，系统才会真正释放共享内存资源
 */
 
 int shm_unlink(const char *name);



 int truncate(const char *path,off_t length);
 /**
  * 将指定文件扩展或截取到指定大小
  * char*path:文件名指定存在的文件即可不需要打开
  * off_t length:指定长度单位字节
  * return: int 成功 0
  *             失败 -1
  */


 int ftruncate(int fd,off_t length);
  /**
  * 将指定文件描述符扩展或截取到指定大小
  * int fd:文件描述符需要打开并且有写权限
  * off_t length:指定长度单位字节
  * return: int 成功 0
  *             失败 1
  */